﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using USMCdotNET;

namespace USMC.Net
{
    /// <summary>
    /// Interaction logic for baskLashPage.xaml
    /// </summary>
    public partial class baskLashPage : baseParametersPage
    {
        public baskLashPage(Devices devices)
        {
            InitializeComponent();
            _devices = devices;
            stepsXValTextBox.Text = _devices.PRMS[0].MaxLoft.ToString();
            stepsYValTextBox.Text = _devices.PRMS[1].MaxLoft.ToString();
            
            speedXValTextBox.Text = _devices.PRMS[0].LoftPeriod.ToString("F3");
            speedYValTextBox.Text = _devices.PRMS[1].LoftPeriod.ToString("F3");

        }
        public override void ApplyParameters()
        {
            ushort xsteps,ysteps;
            try
            {
                xsteps=ushort.Parse(stepsXValTextBox.Text);
                if(xsteps<1000)
                    _devices.PRMS[0].MaxLoft=xsteps;
                else
                    MessageBox.Show("Неверное значение количества шагов по X", "Ошибка");
            }
            catch
            {MessageBox.Show("Неверное значение количества шагов по X", "Ошибка");}

            try
            {
                ysteps = ushort.Parse(stepsYValTextBox.Text);
                if (ysteps < 1000)
                    _devices.PRMS[0].MaxLoft = ysteps;
                else
                    MessageBox.Show("Неверное значение количества шагов по X", "Ошибка");
            }
            catch
            { MessageBox.Show("Неверное значение количества шагов по X", "Ошибка"); }
            float loftPerX, loftPerY;
            try
            {
                loftPerX = float.Parse(speedXValTextBox.Text);
                if (loftPerX > 0 && loftPerX < 5000)
                {
                    _devices.PRMS[0].LoftPeriod = loftPerX;
                }
                else
                    MessageBox.Show("Некорректная скорость по X", "Ошибка");
            }
            catch
            {
                MessageBox.Show("Некорректная скорость по X", "Ошибка");
            }
            try
            {
                loftPerY = float.Parse(speedYValTextBox.Text);
                if (loftPerY > 0 && loftPerY < 5000)
                {
                    _devices.PRMS[0].LoftPeriod = loftPerY;
                }
                else
                    MessageBox.Show("Некорректная скорость по Y", "Ошибка");
            }
            catch
            {
                MessageBox.Show("Некорректная скорость по Y", "Ошибка");
            }
        }
        private void TextBox_KeyDown(object sender, KeyEventArgs e)
        {
            TextBox t = (TextBox)sender;
            char ch = (char)e.Key;
            if (!Char.IsDigit(ch))
            {
                if (e.Key != Key.Back && e.Key != Key.Delete)
                    e.Handled = true;
                else if (t.Text.Length == 1 || t.SelectedText.Length == t.Text.Length)
                    e.Handled = true;
            }
            else if (t.Text.Length > 5)
            {
                if (t.SelectedText.Length == 0)
                    e.Handled = true;
            }
        }

        private void executeButton1_Click(object sender, RoutedEventArgs e)
        {
            
        }
    }
}
